Method of Transmitting Digital Data Packets and Device Implementing the Method and Receiver

ABSTRACT

The invention relates to a method of transmitting digital data packets protected by error correction packets and more precisely the manner of inserting these correction packets into the data packet stream so as to increase the correction effectiveness of the error correction method while limiting the latency introduced into the transmission. The packets are set out in matrix form, error packets are computed on lines and columns and are inserted regularly into the stream at a sufficient distance from the data packets that they protect.

The present invention relates to error correction in the context ofsending digital data in packet form and more precisely the manner ofsending the correction packets in the data packet stream.

When digital data are sent over a network in data packet form,transmission errors may affect the packets. The networks allowing thetransfer of digital data in packet form have specific characteristics,such as bandwidth, latency or reliability, which vary from one type ofnetwork to another. Depending on the type of network, there is anoticeably different sensitivity to different types of errors likely tooccur during the transmission of packet data over this network. Amongstthe types of errors likely to occur are the transmission of a packetwith an errored bit, the random loss of a packet, the loss of a seriesof adjacent packets, the duplication of a packet or of a series ofpackets.

To counter these errors, two types of methods conventionally exist. Onthe one hand there are the error detection methods, which are used todetect whether a transmitted packet is errored and to ignore it. Usuallythese methods are used when the transmission protocol is used to requesta resending of the lost packet. Here, mention can be made of the CRC(Cyclic Redundancy Check) and the TCP (Transfer Control Protocol)protocol over IP type networks. On the other hand, there are methodswhich are used, not only to detect an errored packet, but also toreconstruct it. These methods are known by the acronym FEC (ForwardError Correction) and are well suited to protocols in which the requestto resend an errored data packet is not possible. Here, mention can bemade of the real time multimedia content transmission protocols in whichcompliance with real time is incompatible with resending the erroredpackets. The RTP (Real Time Protocol) protocol corresponds to the lattercase.

The general operating principle of the FEC methods is the application ofa function, for example an XOR, on all the data packets. The result ofthis function gives a packet, called the correction packet, which istransmitted in addition to the data packets that have been used togenerate it. When a packet is found to be errored, the correctionpacket, associated with the correctly transmitted packets, is used toreconstruct the errored packet. But this method has limitations in thesense that there are errors that cannot be corrected. Specifically, iftwo packets are errored in the set of packets that have been used togenerate a correction packet by the XOR function, the latter will not besufficient to reconstruct the two errored packets. The strategy used inthe choice of the packets used to generate the correction packet istherefore crucial to the effectiveness of the correction method. Inparticular, this strategy will depend on the type of errors occurringmost frequently on the type of network used. For example, thecomputation of the correction function on N contiguous packets will beused to correct random errors that are not too numerous but will bepowerless in the face of a series of lost packets. To counter the seriesof lost packets, it is known practice, for example in the document “Codeof Practice” of the Pro-MPEG forum, to compute the correction functionon a set of D packets taken periodically every L packets. The functionis applied to packets i, i+L, i+2L, . . . , i+(D−1)L. In this manner aseries of errored packets of up to L contiguous packets may be correctedby the method.

An improvement to this method, assuming that the data packets are setout in a matrix of D lines and L columns, consists in applying thefunction to the lines and to the columns of that matrix. A diagram ofthis known method is given in FIG. 1. In this case, the function isapplied not only to the packets i, i+L, i+2L, . . . , i+(D−1)L, but alsoto the packets i, i+1, i+2, . . . , i+L−1. In this manner, each datapacket is used to compute two correction packets, and the correctionrate in the presence of random errors increases significantly whileretaining good correction of the series of errored packets.

An extension of this method consists in allowing the definition of asecond line length L′, L′ being a divisor of L*D or 0, and applying thecorrection function to lines of length L′ instead of L to obtain theline correction packets. A length L′ equal to 0 means that no linecorrection is made but only a column correction. In this manner, anumber D′=L*D/L′ line correction packets is generated for L*D datapackets.

In a known manner, the error correction packets are computed byaccumulation in a register of the contribution of each packetcontributing to its computation. The transmission in the error packetstream is then carried out just after the last packet used to compute itis sent.

The transmission of these correction packets in the stream as soon asthey are computed shows itself to have a negative influence on thecorrection capability of the method. Specifically, the transmission ofdata correction packets in the stream has the following consequences:

It uses up bandwidth allocated to the data.

It affects the regularity of transmission of the data packets,particularly when sending several correction packets to follow.

The computation of the correction packets at the source may require thetemporary storage of the data and introduce latency at the source.

The computation of the lost packets at the destination may require thetemporary storage of the data and introduce latency at the destination.

This may affect the correction capability of the method particularlywhen there is the loss of a series of consecutive packets containingdata packets and the correction packet protecting them.

The invention uses a clever choice of the sequencing of the correctionpackets in the stream to increase the correction capabilities of themethod while limiting the impact on the latency of the data transfer ofthis sequencing.

The invention relates to a method of transmitting a stream of digitaldata packets comprising a step of protecting the said data packets witherror correction packets computed by the application of a correctionfunction on lines and columns of these data packets set out in matrixfashion, the lines and columns being defined by the index of the firstpacket, an incremental offset and the total number of packets comprisingthem. The method also comprises a step of inserting the said errorcorrection packets into the data packet stream. The method ischaracterized in that at least certain error correction packets areinserted into the stream at chosen locations and not following the lastdata packet used to compute them.

According to a particular embodiment of the invention, the errorcorrection packets computed on a line of data packets with consecutiveindices are inserted into the data packet stream following the last datapacket of the line that they protect.

According to a particular embodiment of the invention, the errorcorrection packets computed on the columns of a data packet matrix areall inserted into the data packet stream sequentially at least after thelast data packet of the matrix.

According to a particular embodiment of the invention, the correctionpackets computed on the columns of a data packet matrix are insertedinto the data packet stream regularly amongst the data packets of thematrix that they protect.

According to a particular embodiment of the invention, the correctionpackets computed on the columns of a data packet matrix are insertedinto the data packet stream regularly amongst the data packets of thematrix following that which they protect.

According to a particular embodiment of the invention, the basic indicesof the data packets marking the first data packets forming the columnson which the column error correction packets are computed do not followsequentially, the said columns forming a so-called non-rectangularmatrix, the said column correction packets are inserted into the datapacket stream so that there is at least a number of packets equal to thelength chosen for the matrix line minus one between the last data packetand the column correction packet that protects them.

According to a particular embodiment of the invention, the basic indicesof the data packets marking the first data packets forming the columnson which the column error correction packets are computed do not followsequentially, the said columns forming a so-called non-rectangularmatrix, while the offset separating two consecutive packets of a line ofdata packets used to compute a line correction packet is different fromone, forming a nonlinear line, the offset being chosen according to thechoice made on the basic indices of the data packets marking the firstdata packets forming the columns on which the column error correctionpackets are computed so that these nonlinear lines correspond to thelines of the non-rectangular matrix formed by the columns, the saiderror correction packets, both line and column, are inserted into thedata packet stream so that there is at least a number of packets equalto the length chosen for the matrix line minus one between the last datapacket and the correction packet, whether line or column, that protectsthem.

The invention also relates to a device having digital data packet streamtransmission means, means of computing error correction packets by theapplication of an error correction function on lines and columns of datapackets set out in a matrix, characterized in that the device has meansfor inserting the error correction packets into the data stream so thatat least certain error correction packets are inserted into the streamat chosen locations and not following the last data packet used tocompute them.

The invention will be better understood and other particular featuresand advantages will appear on reading the description that follows, thedescription making reference to the appended drawings in which:

FIG. 1 represents a diagram of the computation of the line and columncorrection packets in an exemplary embodiment of the invention.

FIG. 2 represents an exemplary sequencing according to the firstsequencing method.

FIG. 3 represents an exemplary sequencing according to the secondsequencing method.

FIG. 4 represents an exemplary sequencing according to the thirdsequencing method.

FIG. 5 represents the structure of a correction packet placed in apacket according to the RTP protocol.

FIG. 6 represents the header of a correction packet according to RFC2733.

FIG. 7 represents the header of a correction packet according to theexemplary embodiment of the invention described.

FIG. 8 represents an exemplary sequencing according to the fourthsequencing method.

FIG. 9 represents an exemplary sequencing according to the fifthsequencing method.

FIG. 10 represents the hardware architecture of a transmitting orreceiving device according to the exemplary embodiment of the invention.

The exemplary embodiment of the invention is placed in the context ofthe real time transfer of digital data over an IP type network. The dataare transmitted, in this exemplary embodiment, in the form of a streamvia the RTP (Real Time Protocol) protocol. RFC 2733 describes a standardmanner of correcting the data packets transmitted by the RTP protocol.This method has been the subject of an extension described in the “Codeof Practice” document of the Pro-MPEG forum.

In this exemplary embodiment, the data packets are set out in lines of Lpackets. Consideration will then be given to matrices of D lines and Lpackets as can be seen in FIG. 1. L and D are chosen according to theeffectiveness that is required. The manner in which these parametersinfluence the effectiveness of the correction method will be describedhereinafter. A correction function is then applied to each column of thematrix. Then a second line length, L′, is defined, potentially differentfrom the line length L of the matrix. The only requirement of L′ is tobe a divisor of L*D or 0. The same correction function is also appliedto each sequence of consecutive L′ packets of the matrix.

It is also worthwhile to generalize the concept of matrix, initiallyseen as a rectangular table of D lines and L columns containing the datapackets set out consecutively from left to right and from top to bottom.For this purpose, a definition will be given of a matrix concept, callednon-rectangular, in which the lines and the columns are defined by abasic index, a number of packets and an incremental offset. Therefore aline or a column of such a non-rectangular matrix will be defined ascomprising data packets of index i, i+p, i+2p, i+(n−1)p in which i isthe basic index, p is the incremental offset and n the number ofpackets, this number of packets therefore corresponding to the size ofthe correction lines L′, potentially different from the size of thematrix lines, or to the size of the columns D of the non-rectangularmatrix generalizing the rectangular matrix concept.

This correction function may be a XOR, which is the simplest toimplement, but other functions are possible such as Reed-Solomon or aHamming code. These functions are more powerful but more costly incomputation. Irrespective of which correction function is chosen, theresult of applying this function to a set of packets, a line or a columnof the matrix in this instance, is a packet that is called a correctionpacket. The result of the method is therefore L column correctionpackets corresponding to applying the function to each column and D′line correction packets corresponding to applying the function to eachline. It is also possible to add a correction packet computed byapplying the correction function to the correction packets themselves,which adds a second level of protection that is used to correct a lossof a correction packet.

These packets must be transmitted to the destination of the data stream.This transmission may be carried out in several ways. It is possible totransmit these correction packets in the same stream as the datapackets, but they are then subject to the same transmission problems asthe stream that they protect. They may also be transmitted in a separatestream, which increases resistance to errors.

The method described by the Pro-MPEG forum consists in calculating andsending the correction packets computed based on the columns of thematrix. The method described here, because it sends these same packets,remains compatible with that of Pro-MPEG. Specifically, receivingdevices complying with this standard will ignore the correction packetscomputed on the lines of the matrix and may therefore operate in thesame manner with a transmitter according to the invention and with atransmitter according to the Pro-MPEG method.

The structure of a packet, as described in RFC 2733, is represented inFIG. 5. It consists in a RTP packet header whose description can befound in RFC 1889. This header is followed by a FEC header then by thecorrection packet itself. The structure of a FEC header according to RFC2733 is represented in FIG. 6. This header contains a “base SN” fieldwhich contains the lowest sequence number of the set of data packetsused to construct the correction packet. The “length recovery” field isused to determine the length of any data packet. It is constructed byapplying the correction function to the set formed of the lengths ofeach data packet. The “E” field is used to indicate a header extension.The “PT recovery” field is obtained by applying the correction functionto the data packet “type” field. The “Mask” field is a 24-bit field thatis used to determine which data packets are used to construct thecorrection packet. If bit i is at one, it means that the packets N+ihave been used to construct the correction packet. N is the base storedin the “base SN” field. The “TS recovery” field is computed by applyingthe correction function to the timestamps of the data packets. It isused to reconstruct these timestamps.

It can be seen that, through this mechanism, it is possible only tocompute correction packets on sets of a maximum of 24 data packets. Toexceed this limit, an extension of this header is defined in the “CodeOf Practice” document of the pro-MPEG forum. This extension isrepresented in FIG. 7. It contains the same header as previously inwhich the extension field is marked at 1. A new extension field “E” ontwo bits is added which determines the use of the “extension field”field. The “type” field indicates which correction function is used, 0for XOR, 1 for a Hamming code, 2 for a Reed/Solomon. The “index” fieldis used to order the FEC packets in the case where the result of thecorrection function exceeds the maximum packet size. This may be thecase for complex correction functions. The “offset” field determines theperiod chosen for selecting the data packets; it corresponds to the Lparameter of the matrix. The field “NA” (Number of Associated)determines the number of associated data packets for the generation ofthe correction packet; this number corresponds to the D parameter of thematrix. The “extension field” field is reserved for future uses. The“mask” field has become useless and is initialized by filler octets at0.

The amendment relative to RFC 2733 consists in separating the “E” fieldof two bits into a new “E” field on one bit and a “D” field on one bitalso which determines whether the correction packet in question iscomputed on the columns, in which case this “D” field is set at 0. Ifthe correction packet is calculated on a line, this D field is set at 1.It can be seen that with this mechanism, a correction packet computed ona column remains absolutely identical to the same packet computedaccording to the pro-MPEG forum method, while the additional packetscomputed on the lines are identifiable by the presence of the D field at1, which amounts to setting to one the “E” extension field on two bitsif the packet is interpreted according to the pro-MPEG method indicatingthat this packet uses an extension of the format defined by the forum.

When the packets are received, the receiver will restore the receivedpackets in a buffer. The size of this buffer must allow the storage ofat least L times D data packets plus the corresponding L plus D′correction packets. The distinction between the data packets and thecorrection packets is made by the “type” field of the RTP header asdescribed in RFC 1889 describing this protocol. It will be possible todistinguish the data packets from one another thanks to their sequencenumber and the correction packets from one another thanks to the “baseSN” field of their header. Knowledge of the missing packets will thenmake it possible to attempt their reconstruction by using the correctionfunction and the correction packets. For example, if the correctionfunction used is XOR, it is possible to correct the loss of a datapacket in a set of data packets used to generate a correction packet,with the aid of this correction packet. The lines and the columnscontaining only one lost packet will therefore now be identified in thematrix of received packets to reconstruct them with the correspondingcorrection packet. The correction may, for example, be carried out bythe following method:

Computation of a vector NLi of the number of data packets missing in theline i.

Computation of a vector NCi of the number of data packets missing in thecolumn i.

If a missing packet still remains in the matrix, do the following:

-   -   Find the minimum index p such that NLp=1;

If such a p exists:

Find the index of column q corresponding to the missing packet

Reconstruct the packet of index p and q that is missing by applying theXOR function on the other packets of the line and on the correctionpacket corresponding to that line

NLp=0; NCq=NCq−1;

In the absence of such an index p, find a minimum index q such thatNCq=1

If such a q exists:

-   -   Find the index of column p corresponding to the missing packet    -   Reconstruct the packet of index p and q that is missing by        applying the XOR function on the other packets of the line and        on the correction packet corresponding to that column    -   NLp=NLp−1; NCq=0;

Otherwise the reconstruction method has failed.

If it succeeds, all the lost packets are reconstructed.

The parameters L, L′ and D of the method must be chosen taking accountof the following information. First of all, the surplus generated by thecorrection packets that must be sent in addition to the data packets is1/L′+1/D, so it can be seen that choosing L′ and D to be large willminimize the occupancy of the bandwidth necessary to use the method.Furthermore, the method can be used to correct series of lost packets ofup to L+1 contiguous packets, so the bigger L, the more the method willbe effective in correcting this type of error. The method is capable ofcorrecting all the random losses of packets up to a number of three lostpackets and certain random losses of packets up to a number of D+L−1lost packets. The symmetry of the problem induces a maximumeffectiveness on the random losses of packets when L and D have the samevalue. Now, the method requires buffers in the devices, whether they betransmitters or receivers, of a minimum size of L*D packets. It cantherefore be seen that it is worthwhile choosing values of L′ and D tobe large to maximize the effectiveness of the method but that this islimited by the size of the transmit and receive buffers of the devices.Another limitation may arise from the time to compute the correctionfunction which may become long for a large number of packets and achoice of a complex function.

Statistical computations are used to compare the effectiveness of thismethod with that described by the Pro-MPEG forum. It is noted that, asexpected, its effectiveness is much greater. For example, by using theXOR correction function and a matrix in which L, L′ and D have a valueof 6, the method corrects 94.1 percent of the random losses of six datapackets whereas the RFC method corrects only 2.4 percent. The method istherefore evidently much more effective for the correction of randomlosses of data packets in the stream. While the method is capable ofcorrecting all the losses of adjacent packets up to a number of D+1successive packets while the Pro-MPEG method corrects only up to anumber of D. It can therefore be seen that the performance on the lossof adjacent data packets is slightly improved while the performance onrandom errors is very greatly improved.

Several choices of error correction packet sequencing within the datapacket stream and the impact of these choices on the error correctionmethod will now be described.

Take as reference the layout of the data packets in a rectangular matrixof D=5 lines and L′=L=4 columns as illustrated in FIG. 2. In addition,for simplification purposes, the length of the correction line L′ willbe chosen to be equal to the length of the matrix line L, but theinvention extends to any value of L′ dividing L*D or 0. The packetsFEC′i are computed from data packets of the line i while the packetsFECi are computed from the packets of the corresponding column, forexample the packet FEC2 is computed from the packets 2, 6, 10, 14 and18. A conventional sequencing method consists in inserting thecorrection packets immediately after the last data packet used tocompute them. In the example, this conventional sequencing leads tosending the packets in the following order: 0, 1, 2, 3, FEC′0, 4, 5, 6,7, FEC′1, . . . , FEC′3, 16, FEC0, 17, FEC1, 18, FEC2, 19, FEC3, FEC′4.

The loss of a series of consecutive packets, this series being able tocontain data packets and correction packets, can be correctedconditional upon having, for each lost data packet, the columncorrection packet protecting it. It is then certain that any series ofconsecutive lost packets containing up to L data packets or columncorrection packets protecting one of the data packets of the series canbe corrected. It will therefore be possible to ensure the correction ofany series of packets containing up to L data packets provided that allthe column correction packets are inserted into the stream at a distancesuch that there are at least L−1 packets between the last data packetthat it corrects and the insertion point. Note that it is sometimespossible to correct the loss of a series of consecutive packetscontaining up to 2L packets, but this is not guaranteed.

This sequencing poses the problem of the correction of losses of seriesof consecutive packets. Specifically, although the loss in series of Lconsecutive packets can usually be corrected thanks to the column FECpackets, if this occurs for the last line in which the data packets andthe column FEC packets are interlaced, this same error will not becorrectable.

A first method used to remedy this problem consists in sending all thecolumn FEC packets in series after the transmission of the last linecorrection packet, FEC′4 in the example. The transmission sequence inthe example then becomes: 0, 1, 2, 3, FEC′0, 4, 5, 6, 7, FEC′1, . . . ,FEC′3, 16, 17, 18, 19, FEC′4, FEC0, FEC1, FEC2, FEC3.

It is evident therefore that, in this case, it is always possible tocorrect the loss of a series of packets, data plus FEC, of up to L+1packets, L data packets and one line correction packet.

On the other hand, this procedure poses the problem that what is beingsent is a consecutive series of at least D error correction packets, thelast line packet, if it exists, followed by the D column packets.Depending on the size of the matrix, this gives rise to a fairly longtime in which no data packet is sent; the regularity in the datatransmission is lost.

To counter this problem, a second method consists in storing all thepackets of the matrix in a buffer and in computing all the correctionpackets, whether lines or columns. Then the transmission of the columncorrection packets may be distributed regularly in the transmission ofdata packets, for example every N packets, the line correction packetsstill being sent after transmission of the data packets constituting theline used to compute them. This sequencing is illustrated by FIG. 3 inwhich the order of transmission of the packets reads from left to rightand from top to bottom. When several packets are indicated in one andthe same box, they are sent in the order in which they appear. Ajudicious way of choosing the increment N is to choose N=L/2 if thenumber of lines D is greater than or equal to the number of columns Land N=D otherwise, but it will appear to those skilled in the art thatany other regular distribution of the column correction packets in thematrix has the same properties.

In this manner, the data packet stream is regular, whereas the need tostore the packets introduces a latency in the transmission of thepackets. In addition, the column correction packets are always sent at adistance less than L−1 packets from one of the packets used to computethem, so this does not benefit from the resistance to loss of aconsecutive series of L packets that existed in the first method.

A third method consists in distributing the column correction packets inthe next matrix of data packets as illustrated by FIG. 4. One procedureconsists in inserting the first column correction packet after the firstdata packet of the next matrix. This ensures that there will be adistance greater than L−1 from the preceding one. This therefore retainsthe resistance to loss of series of consecutive packets containing Lpackets. The correction packets are regularly distributed in the datapacket stream. In addition, it is no longer necessary to delay thetransmission of the data packets at the source. On the contrary, thedata packets of the matrix must be stored at the destination until thelast column correction packet has been received for the reconstructionof the lost packets. The method therefore involves a latency at thedestination. Here again, it will be evident to those skilled in the artthat any other regular distribution of the column correction packets inthe next matrix has the same properties.

A fourth method explores the possibility of using non-rectangularmatrices. Specifically, the definition of the error correction scheme isbased on the computation of error packets defined by three parametersincluded in the header of these packets. This header is illustrated inFIG. 7. A correction packet is therefore defined by an SN fieldcorresponding to the index of the first data packet used to compute it;an “offset” field determines the period chosen for selecting the datapackets; it corresponds to the parameter L of the matrix. The “NA”(Number of Associated) field determines the number of associated datapackets for the generation of the correction packet; this numbercorresponds to the parameter D of the matrix.

Obtaining the rectangular matrix usually used therefore corresponds, forthe line correction packets, to using an offset of 1, a number of L′,and to incrementing the basic index by L′ beginning with the index ofthe first data packet of the matrix, the column correction packets beingobtained by an offset of L, a number of D, and by incrementing the basicindex by 1 based on the index of the first data packet of the matrix.

The manner of changing the basic index of the column correction packetsis used to define a matrix, called non-rectangular, by changing the 1increment of the basic index. For example, such a matrix is illustratedin FIG. 8. It can be seen that the line correction packets are stillcomputed in the same manner on a line consisting of L′ data packets withconsecutive indices. Certain lines therefore contain packets belongingto consecutive non-rectangular matrices. On the other hand, the columncorrection packets are computed on a column of D packets but the basicindices of two consecutive columns are not sequential and the basicindex of the column i+1 minus that of the column i is different from L.In the example given, the packet FEC0 is computed on the data packets 3,7, 11, 15 and 19, the packet FEC1 is computed on the data packets 6, 10,14, 18 and 22, the packet FEC2 is computed on the data packets 9, 13,17, 21 and 25 and the packet FEC3 is computed on the data packets 12,16, 20, 24 and 28.

A wise, but not necessary, manner of choosing these basic indices of thecolumns consists in separating the basic indices of two consecutivecolumns by a distance of D, if L is greater than D and by L−1 otherwise.

The line correction packets are still inserted in the same manner at theend of the line of data packets that they protect. Whereas the columncorrection packets are inserted at a distance at least equal to L−1 fromthe last data packet of the column used to compute it; an example isgiven in FIG. 8.

The advantage of this method is that it maintains a regular stream inwhich the correction packets are distributed regularly in the stream ofdata packets. The effectiveness of the correction method is retained inthe event of the loss of a series of consecutive packets since thecolumn correction packets are separated by at least L−1 packets from thepackets that they protect. Nor is it necessary to store the data packetsand delay their transmission at the source. No latency is thereforegenerated at the source.

The disadvantage of this method is that, at the destination, all thelines containing at least one packet of the non-rectangular matrix mustbe stored to allow the reconstruction of the lost packets, henceslightly more than the non-rectangular matrix itself.

A fifth method consists in modifying the fourth by changing the linescheme. Nonlinear matrix lines are defined in which the offset is nolonger one but depends on the configuration chosen for the columns. Ifthe distance between the basic indices of the columns is L−1, an offsetof L−1 will be chosen. In the example illustrated in FIG. 9, the methodno longer consists, as the line used to compute the line correctionpackets, in a line of packets with consecutive indices, but in adiagonal line. This therefore uses the lines and the columns of the datapackets of the non-rectangular matrix. In the example in FIG. 9, thepacket FEC′0 is computed by using the packets 3, 6, 9 and 12, the packetFEC′1 is computed by using the packets 7, 10, 13 and 16, the packetFEC′2 is computed by using the packets 11, 14, 17 and 20, the packetFEC′3 is computed by using the packets 15, 18, 21 and 24 and the packetFEC′4 is computed by using the packets 19, 22, 25 and 28. The columnpackets are still computed according to the fourth method. An example ofsequencing is indicated in FIG. 9.

Concerning the sequencing, this time the line packets like the columnpackets are inserted at a distance of at least L−1 packets from the lastdata packet that they protect. An example is given in FIG. 9.

One advantage of this method is that it allows the reconstruction of thelost packets even when two series of L consecutive packets are lost andeven, in some cases, when a series of 2L consecutive packets is lost.Another advantage of this method is that it maintains a regular streamin which the correction packets are distributed regularly in the streamof data packets. The effectiveness of the reconstruction method isretained, whether for the loss of series of consecutive packets or forthe loss of isolated packets. The correction packets are computed onlyon the packets of the current matrix. With respect to latency, thismethod does not require the storage of the data packets at the source inbuffers and therefore introduces no latency at the source.

FIG. 10 represents the internal architecture of a transmitter orreceiver device 1 which has read-only memory (ROM 4) allowing it tostore programs and data, random access memory (RAM 3) allowing it toload these programs for the purpose of an execution by the processor 2.This device is connected to an IP-type network via a network interface 5which allows it to send or receive the digital data packet streams.These components communicate by means of an internal bus 6.

1. Method of transmitting a stream of digital data packets comprising: astep of protecting the said data packets with error correction packetscomputed by the application of a correction function on lines andcolumns of these data packets set out in matrix fashion, the lines andcolumns being defined by the index of the first packet, an incrementaloffset and the total number of packets comprising them; a step ofinserting the said error correction packets into the data packet stream;wherein at least certain error correction packets are inserted into thestream at chosen locations and not following the last data packet usedto compute them.
 2. Method according to claim 1, wherein the errorcorrection packets computed on a line of data packets with consecutiveindices are inserted into the data packet stream following the last datapacket of the line that they protect.
 3. Method according to claim 2,wherein the error correction packets computed on the columns of a datapacket matrix are all inserted into the data packet stream sequentiallyat least after the last data packet of the matrix.
 4. Method accordingto claim 2, wherein the correction packets computed on the columns of adata packet matrix are inserted into the data packet stream regularlyamongst the data packets of the matrix that they protect.
 5. Methodaccording to claim 2, wherein the correction packets computed on thecolumns of a data packet matrix are inserted into the data packet streamregularly amongst the data packets of the matrix following that whichthey protect.
 6. Method according to claim 2, wherein the basic indicesof the data packets marking the first data packets forming the columnson which the column error correction packets are computed do not followsequentially, the said columns forming a so-called non-rectangularmatrix, the said column correction packets are inserted into the datapacket stream so that there is at least a number of packets equal to thelength chosen for the matrix line minus one between the last data packetand the column correction packet that protects them.
 7. Method accordingto claim 1, wherein the basic indices of the data packets marking thefirst data packets forming the columns on which the column errorcorrection packets are computed do not follow sequentially, the saidcolumns forming a so-called non-rectangular matrix, while the offsetseparating two consecutive packets of a line of data packets used tocompute a line correction packet is different from one, forming anonlinear line, the offset being chosen according to the choice made onthe basic indices of the data packets marking the first data packetsforming the columns on which the column error correction packets arecomputed so that these nonlinear lines correspond to the lines of thenon-rectangular matrix formed by the columns, the said error correctionpackets, both line and column, are inserted into the data packet streamso that there is at least a number of packets equal to the length chosenfor the matrix line minus one between the last data packet and thecorrection packet, whether line or column, that protects them.
 8. Devicehaving digital data packet stream transmission means, means of computingerror correction packets by the application of an error correctionfunction on lines and columns of data packets set out in a matrix,wherein the device has means for inserting the error correction packetsinto the data stream so that at least certain error correction packetsare inserted into the stream at chosen locations and not following thelast data packet used to compute them.
 9. Receiver adapted to receivedigital data packet streams wherein streams comprise error correctionpackets computed by the application of an error correction function onlines and columns of data packets set out in a matrix, and the errorcorrection packets being inserted into the data stream so that at leastcertain error correction packets are inserted into the stream at chosenlocations and not following the last data packet used to compute them.